/* 
 * En este archivo definiremos las funciones para el calculo de autovalores
 * y autovectores.
 */

#ifndef _AUTOVALORES_H
#define	_AUTOVALORES_H


    #include "matrices.h"

    /*
     * Definimos los parámetros usados en el método de las potencias.
     */
    #define MAX_CANT_ITERACIONES 20000000
    #define MINIMO_ERROR 0.0000001

    /*
     * Esta estructura almacena un vector propio y su autovalor.
     */
    struct VV_PROPIO {
        double autovalor;
        struct VECTOR *autovector;
    };


    /*
     * Este método calcula el mayor autovalor de la matriz y su vector asociado.
     * El método usado es el método de las potencias y utiliza como parametrización
     * las constantes definidas en este archivo.
     */
    struct VV_PROPIO * metodoPotencias(struct MATRIZ *matriz);


    /*
     * Este método obtiene un autovalor aproximado entre los 2 autovalores
     * pasados por parámetro.
     */
    double aproximarAutovalorMedio(double autovalor1, double autovalor2);

    
    /*
     * Esta función elimina un VV_PROPIO pasado por parámetro.
     */
    void eliminar_VV_PROPIO(struct VV_PROPIO *vvPropio);


#endif	/* _AUTOVALORES_H */

